package com.edu.controller;


import com.edu.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.DependsOn;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Controller;

import javax.annotation.Resource;

/**
 * @Controller 作用和使用同 @Component
 * Controller 语义上 希望用在控制层(Servlet 或者是 SpringMVC中Controller 或者Structs2中的 Action上)
 */
@Controller("uController")
@DependsOn("userService")
public class UserController {

    /**
     * @Resource 用于自动注入
     *      1.@Resource 默认是通过名字 来进行自动注入
     *      2.如果没有 同名的bean 那么就按照类型进行自动注入
     *      3.@Resource(name="beanId") 只能按指定名字注入
     *      4.@Resource 是java原生注解 和Spring框架无关。
     */
//    @Resource(name= "userServiceImpl2")



    /**
     * @Autowire 用于自动注入
     *      1 . 通过类型 进行自动注入，同一个类型有多个会报错
     *      2 。 更推荐 放在 属性的set方法上进行注入，不推荐直接放在属性上
     *      3.  required 是否必须要注入 这个属性
     *      4.  如果有多个同类型的，会按照名字注入
     */

    @Resource
    private UserService userService;


    public UserService getUserService() {
        return userService;
    }


//    @Autowired
//    @Qualifier("userService")
//    public void setUserService(UserService userService) {
//        this.userService = userService;
//    }

    public void userLogin(){
        userService.login();
        System.out.println("执行了MyController里的登录方法");
    }

    public UserController() {
        System.out.println(1);
    }
}
